package Dao;

import java.util.List;

import Pojo.*;

/**
 * Interface para o DAO de Histórico Turma. Toda implementação dessa interface deve implementar os métodos abaixos.
 * @author Ronan Lopes
 *
 */
public interface HistoricoTurmaDao {
         /**
	 * Inserir HistoricoTurma
	 * @param HistoricoTurma
	 * @return inteiro que referência o código do históricoTurma encontrado. Se não foi encontrado retorna a flag -1 
	 */
	public boolean inserir(HistoricoTurma historicoTurma);

         /**
	 * Remover HistoricoTurma
	 * @param HistoricoTurma
	 * @return inteiro que referência o código do históricoTurma encontrado. Se não foi encontrado retorna a flag -1 
	 */
	public boolean remover(HistoricoTurma historicoTurma);
    
         /**
	 * Alterar HistoricoTurma
	 * @param HistoricoTurma
	 * @return inteiro que referência o código do históricoTurma encontrado. Se não foi encontrado retorna a flag -1 
	 */
	public boolean alterar(HistoricoTurma historicoTurma);
            
        /**
	 * Verificação da existência de um históricoTurma pesquisando por um aluno e uma turma
	 * @param idAluno
	 * @param idTurma
	 * @return inteiro que referência o código do históricoTurma encontrado. Se não foi encontrado retorna a flag -1 
	 */
	public int verificarAlunoCadastradoTurma(Aluno aluno, Turma turma);
	
	/**
	 * Pesquisa de Alunos passando a turma
	 * @param turma
	 * @return Lista de Alunos cujo historicoTurma pertence à turma
	 */
	public List<Aluno> pesquisarAlunosTurma(Turma turma);
        
	/**
	 * Método que buscar o historicoTurma passando um aluno e uma turma
	 * @param aluno
	 * @param turma
	 * @return HistoricoTurma ou null se não encontrar
	 */
	public HistoricoTurma pesquisarPorAlunoETurma(Aluno aluno, Turma turma);
        
        /**
         * Método que pesquisa históricosTurmas passando um aluno passada por parâmetro
         * @param aluno
         * @return 
         */
        public List<HistoricoTurma> pesquisarPorAluno(Aluno aluno);
        
	/**
	 * Método que pesquisa históricosTurmas passando uma turma passada por parâmetro
	 * @param turma
	 * @return Lista de HistoricoTurma
	 */
        
	public List<HistoricoTurma> pesquisarPorTurma(Turma turma);
}